/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package CapaDatos;
import CapaSeguridad.CodigoErrorEnum;
import CapaSeguridad.GuateBayException;
import java.sql.ResultSet;
import java.util.LinkedList;

/**
 *
 * @author JRN
 */
public class Region_DAO implements DAO{


    private String sentenciaSQL;
    ConexionDB conexion;
    LinkedList<Region_POJO> listaDetalle = new LinkedList<Region_POJO>();
    ResultSet resultado;

    public Region_DAO() {

        conexion = new ConexionDB();
    }

     //Estructura Region
        //idRegion int PRIMARY KEY,
        //nombre varchar(45)

   /**
    * Obtiene los datos de una region en especifico
    * @param id id de la region que se desee obtener
    * @return retorna un LinkedList< Region_Pojo >
    */
    public LinkedList<Region_POJO> obtenerReg(int id) {
    conexion.abrirConexion();
        sentenciaSQL = "SELECT * FROM Region WHERE idRegion=" + id;

        try {
            resultado = conexion.getResultSet(sentenciaSQL);

            if (resultado.next()) {
                Region_POJO objRegion = new Region_POJO();

                objRegion.setIdRegion(Integer.parseInt(resultado.getString("idRegion")));
                objRegion.setNombre(resultado.getString("nombre"));

                listaDetalle.add(objRegion);
                //System.out.println("Resultado " + resultado.getString("costo"));

            }

        } catch (Exception ex) {
            System.out.println("error " + ex);
            conexion.cerrarConexion();
            return null;
        }
        conexion.cerrarConexion();
        return listaDetalle;
    }


   /**
    * Obtiene todas las regiones existentes
    * @return retorna un LinkedList< Region_Pojo >
    */
    public LinkedList<Region_POJO> obtenerRegiones() throws GuateBayException {
    conexion.abrirConexion();
        sentenciaSQL = "SELECT * FROM Region";

        try {
            resultado = conexion.getResultSet(sentenciaSQL);

            while (resultado.next()) {
                Region_POJO objRegion = new Region_POJO();

                objRegion.setIdRegion(Integer.parseInt(resultado.getString("idRegion")));
                objRegion.setNombre(resultado.getString("nombre"));

                listaDetalle.add(objRegion);
                //System.out.println("Resultado " + resultado.getString("costo"));

            }

        } catch (Exception ex) {
            System.out.println("error " + ex);
            conexion.cerrarConexion();
            throw new GuateBayException(ex,"Error en transacción",CodigoErrorEnum.ErrorRegion);            
        }
        conexion.cerrarConexion();
        return listaDetalle;
    }

    public int guardarReg(String nombre) {

        conexion.abrirConexion();
        sentenciaSQL = "INSERT INTO Region(nombre) VALUES ("
                + "'" + nombre + "')";

   
        try {
            int ret = conexion.executeQuery(sentenciaSQL);
            conexion.cerrarConexion();
            return ret;


        } catch (Exception ex) {
            System.out.println("error " + ex);
            conexion.cerrarConexion();
            return -1;
        }

    }


    public int actualizarReg(int idRegion,String nombre) {

        sentenciaSQL = "UPDATE Region SET nombre = '" + nombre +
                        "' WHERE idRegion = " + idRegion;

        try {
           int ret = conexion.executeQuery(sentenciaSQL);
        conexion.cerrarConexion();
            return ret;

        } catch (Exception ex) {
            System.out.println("error " + ex);
            conexion.cerrarConexion();
            return -1;
        }
    }


     public int eliminarReg (int id){

        sentenciaSQL = "DELETE FROM Region WHERE idRegion="+id;

        try {
           int ret = conexion.executeQuery(sentenciaSQL);
           conexion.cerrarConexion();
            return ret;

        } catch (Exception ex) {
            System.out.println("error " + ex);
            conexion.cerrarConexion();
            return -1;
        }

    }

}
